<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>27.超好用的reduce方法详解</title>
</head>

<body>
  <script>
    let arr = [1, 2, 3, 4, 5];
    // 参数： 上次返回的结果，元素值，索引 ，原数组
    // 第一次循环 pre = arr[0], value = arr[1]
    // 之后每次遍历，pre都是上次的返回值，没有返回值则为undefined
    arr.reduce(function (pre, value, index, array) {
      // console.log(pre, value);
    });
    /*
      传入第二个参数：
      第一次循环 pre= 第二个参数，cur = arr[0]之后每次遍历 
      之后每次遍历，pre都是上次return的值，没有返回值则为undefined
    */
    arr.reduce(function (pre, value, index, array) {
      //console.log(pre, value);
      return 99;
    }, 0);

    //统计元素出现的次数
    arr = [1, 2, 3, 1, 1];
    function arrayCount (array, item) {
      return array.reduce(function (total, cur) {
        total += item == cur ? 1 : 0;
        return total;
      }, 0);
    }
    console.log(arrayCount(arr, 1))

    //获取元素中的最大值
    arr = [1, 2, 3, 5, 2];
    function arrayMax (array) {
      return array.reduce(function (pre, cur) {
        return pre>cur? pre:cur;
      })

    }
    console.log(arrayMax(arr));
  </script>
</body>

</html>